C++中 -(10^16-1) 到 (10^16-1) 这么大的数该定义什么样的数据类型来表示它?

来源:百度知道 编辑:UC知道 时间:2024/09/28 03:19:12
急急急!!!

普通的long是不行的,普通long是4字节,也就是32位的。2^32<<10^16吧。

可以用_int64 来定义。
举个例子吧,见下面的程序。

#include<stdio.h>

void main()
{
_int64 a,b,c;
a=10000000000000000;
b=1111111110900009;
c=a+b;
printf("%I64d",c);
getchar();
}

long型应该就可以了,不行的话就double,再不行就自己定义一个int型数组,不过这样就比较麻烦了。

貌似double double型是最大的,比double还要大。

总共 2 × 10^16个数

2×10^16 = 20×1000^5 < 2^6 × 2^50 = 2^56 所以需要56位, long long 就可以了

楼上说的什么double double之类的都是非法定义,在VC中根本不能DEBUG;
如果碰到用基本数据类型不能表示的大数,可以定义整型数组,将大数分段存放到数组中,当然,在进行数据运算的时候,就要重新设计运算函数来进行运算了或者运算符重载;比如遇到大数阶乘的时候,100!很明显不能用基本数据类型存放,只能重新定义整型数组进行分段存放,并在数组中进行阶乘运算,当然要自己设计运算函数。我去年的课程设计就是大数阶乘,用的就是这个原理。但是存放、运算函数就要你自己看情况去设计了。希望对你有帮助